<?php session_start();
$host  = $_SERVER['HTTP_HOST'];
if ($_SERVER['SERVER_NAME'] == 'localhost'){$uri="/kalender";}else{$uri="";}
if (!isset($_SESSION['id_user']) || $_SESSION['id_user']=='') {
	echo "<script language=Javascript> location.href='http://$host$uri/index.php'; </script>";	
}else{
	$id_user = $_SESSION['id_user'];

	require("../globals/Db.class.php");
	require("../globals/Conf.class.php");
	$bd=Db::getInstance();
	
	
	
	//incluyo la clase para laburar con las imagenes
	include('SimpleImage.php');   
	
	//funcion que asigna un nombre
	function get_rand_id($length){
		$codelenght = $length;
		$newcode_length = 0;
		while($newcode_length < $codelenght) {
			$part = rand(1,3);
			if($part==1){$a=48;$b=57;}  // Numbers
			if($part==2){$a=65;$b=90;}  // UpperCase
			if($part==3){$a=97;$b=122;} // LowerCase
			$code_part=chr(rand($a,$b));
			$newcode_length = $newcode_length + 1;
			$newcode = $newcode.$code_part;
		}	
		return $newcode;
	}
	
	
	function giveMeTheFileName(){		
		$fileName = get_rand_id(20);
		$completeFilePath = "../imagenes/$fileName.png";
		return $completeFilePath;	
	}
	
	function giveMeTheThumbnailFileName($path){
		$fileName = substr($path,12); //10 es el length de '../photos/'
		return "../imagenes/thumb_".$fileName;
	}
	
	
	function getImageWidth($path){
		$image = new SimpleImage();
		$image->load($path);
		return $image->getWidth();
	}
	
	function getImageHeight($path){
		$image = new SimpleImage();
		$image->load($path);
		return $image->getHeight();
	}
	
	function saveAndCreateThumbnail($image, $path){

		// Aca no modifico los tamaños hasta que Juan me diga
		$image->load($path);
		$image->save($path); //la guardo con el nombre nuevo
		$image->scale(30);
		$image->save(giveMeTheThumbnailFileName($path));
				
		/*
		$image->load($path);
		$finalWidth = 0;
		$finalHeight = 0;
		$width = $image->getWidth();
		$height = $image->getHeight();
		if ($width >= 640 || $height >= 480){
			if ($width > $height){
				$finalWidth = 640;
				$ratio = 640/$width;
				$finalHeight = intval($height * $ratio);			
			}else{
				$finalHeight = 480;
				$ratio = 480/$height;
				$finalWidth = intval($width * $ratio);			
			}
			$image->resize($finalWidth,$finalHeight);
			$image->save($path);
			$image->scale(30);
			$image->save(giveMeTheThumbnailFileName($path));
		}else{
			//tengo una imagen chiquita (analizar las escalas) (192x144)
			$image->save($path);
			if ($width > $height){
				$finalRatio = 192/$width;
				$finalHeight = intval($height * $finalRatio);
				$image->resize(192,$finalHeight);						
			}else{
				$finalRatio = (144/$height);
				$finalWidth = intval($width * $finalRatio);	
				$image->resize($finalWidth,144);			
			}		
			$image->save(giveMeTheThumbnailFileName($path));
		}	
		*/
	}
	
	function giveMeWidthThumb($width, $height){
		if ($width > $height){
			return (192);						
		}else{
			$finalRatio = (144/$height);
			$finalWidth = intval($width * $finalRatio);	
			return $finalWidth;			
		}	
	}
	
	function giveMeHeightThumb($width, $height){
		if ($width > $height){
			$finalRatio = 192/$width;
			$finalHeight = intval($height * $finalRatio);
			return $finalHeight;						
		}else{
			return (144);			
		}	
	}
	
	function logUpload($desc,$texto){
		$ddf = fopen('..\logs\logUpload.log','a');
		fwrite($ddf,"[".date("r")."] Log > $desc: $texto \r\n");
		fclose($ddf);
	}
	/////------------------------------------------------------------------------------------//////
	
	
	
	// este file funciona bien, deberia probar que en el servidor real no haya oportunidad de reenviar el formulario al apretar F5.
	// una cosa que puedo hacer, como hice un paso posterior al copiar las imagenes y pasar los datos via variables de session,
	// es hacer un paso previo de la misma manera, como me llega una matriz llamada $_FILES, una vez que la obtengo, la meto en una
	// variable de session y se la mando a este upload_action, entonces el tiempo que tiene para reenviar presionando F5, es m�nimo.
	
	
	/////------------------------------------------------------------------------------------//////
	
	
	$_SESSION["var_1_upload"]="";
	
	$photo1 = "empty";
	
	$path1= giveMeTheFileName();
	
	set_time_limit(0);
	
	//copio los files que son formatos permitidos, si no son permitidos, el path ya dice "error".
	if ($path1 != "error"){ 
		move_uploaded_file($_FILES['foto']['tmp_name'], $path1);	
	}
	
	
	//Si se copiaron bien, creo sus respectivos thumbnails
	$image = new SimpleImage();
	if (is_file($path1)) {
		saveAndCreateThumbnail($image, $path1); 
		$photo1 = "ok";
	}
		
	// envio mensajes de error para los files que intentaron subir pero dieron error.
	if (is_uploaded_file($_FILES['file']) && $path1 == "error") {
		logUpload("Error","Se produjo un error al cargar el archivo ".$_FILES['foto']['name']);
		$photo1 = "bad";
	}
	
	//verifico que no todos hayan dado error	
	if ($photo1=="ok"){	
		
		$widthImage = getImageWidth($path1);
		$heightImage = getImageHeight($path1);
		$widthImage2 = giveMeWidthThumb($widthImage,$heightImage);
		$heightImage2 = giveMeHeightThumb($widthImage,$heightImage);
		$path_thumb = "../imagenes/thumb_".substr($path1,12);
		$var_1_upload = $photo1."|".$path1."|".$widthImage."|".$heightImage."|".$path_thumb."|".$widthImage2."|".$heightImage2;
	
		echo($var_1_upload);	
			
	}else{
		echo("msg:error");
	}	
	
}

